package cn.chengpengper.rpc.proxy.jdk;

import cn.chengpengper.rpc.proxy.api.BaseProxyFactory;
import cn.chengpengper.rpc.proxy.api.ProxyFactory;
import cn.chengpengper.rpc.spi.annotation.SpiClass;
import lombok.extern.slf4j.Slf4j;

import java.lang.reflect.Proxy;

/**
 * @author chengpeng.hu
 */
@Slf4j
@SpiClass
public class JdkProxyFactory<T> extends BaseProxyFactory<T> implements ProxyFactory {

    @Override
    public <T> T getProxy(Class<T> clazz) {
        log.info("基于JDK动态代理...");
        return (T) Proxy.newProxyInstance(
                clazz.getClassLoader(),
                new Class<?>[]{clazz},
                objectProxy
        );
    }
}
